<?php

declare(strict_types=1);
/**
 * 
 */
namespace WanZ\App\User\Contract;

interface WzUserAttributeContract
{
    /**
     * 查询单条 - 根据用户ID.
     * @param int $userId 用户ID
     * @param array|string[] $columns 查询字段
     * @return null|\App\Model\WzUserAttribute|\Hyperf\Database\Model\Builder|object
     */
    public function getUserAttrByUserId(int $userId, array $columns = []);

    /**
     * 修改单条 - 根据ID.
     * @param int $id ID
     * @param array $data 修改数据
     * @return int 修改条数
     */
    public function updateUserAttrById(int $id, array $data): int;

    /**
     * 修改单条 - 根据用户ID.
     * @param int $userId 用户ID
     * @param array $data 修改数据
     * @return int 修改条数
     */
    public function updateUserAttrByUserId(int $userId, array $data): int;

    /**
     * 删除 - 单条
     * @param int $userId 用户ID
     * @return int 删除条数
     */
    public function deleteUserAttrByUserId(int $userId): int;

    /**
     * 添加单条
     * @param array $data 添加的数据
     * @return int 自增ID
     */
    public function createUserAttr(array $data): int;    

    /**
     * 查询多条 - 根据微信openID.
     * @param string $wxMiniOpenId
     * @param array $columns 查询字段
     * @return array 响应数组
     */
    public function getUserAttrByWxMiniOpenId(string $wxMiniOpenId, array $columns = []): array;    

    /**
     * 查询多条 - 根据微信unionID.
     * @param string $wxUnionId
     * @param array $columns 查询字段
     * @return array 响应数组
     */
    public function getUserAttrByWxUnionId(string $wxUnionId, array $columns = []): array;

    /**
     * 查询单条 - 根据阿里openID.
     * @param string $aliMiniOpenId
     * @param array $columns 查询字段
     * @return array 响应数组
     */
    public function getUserAttrByAliMiniOpenId(string $aliMiniOpenId, array $columns = []): array;

}
